print("热补丁")

--步骤
--加特性
--加宏  在项目设置-player-脚本定义符号添加HOTFIX_ENABLE
--生成代码
--hotfix注入   将tools放在assets同级  不是内部  只要c#增加了方法调用就要重新注入

-- xlua.hotfix(CS.HotfixMain, "Test", function(self, a)
--     print(a)
-- end)
--批量替换方法
-- xlua.hotfix(CS.HotfixMain, {
--     Test = function(self, a)
--         print(a)
--     end,
--     --构造函数固定写法  不是替换，会先调用原有逻辑
--     [".ctor"] = function(self, a)
--         print(a)
--     end
-- })


--替换协程
util = require("xlua.util")
xlua.hotfix(CS.HotfixMain, {
    TestCoroutine = function(self, a)
        --返回xlua处理过的lua协程函数
        return util.cs_generator(function()
            print(a)
        end)
    end
})

--替换属性和索引器
xlua.hotfix(CS.HotfixMain, {
    set_Age = function(self, value)
        print(value)
    end,
    get_Age = function(self)
        return "hotfix"
    end,

    --索引器
    set_Item = function(self, key, value)
        print(key, value)
    end,
    get_Item = function(self, key)
        return "索引器"
    end
})


--替换事件的加减函数
xlua.hotfix(CS.HotfixMain, {
    add_MyEvent = function(self, value)
        print("添加事件");
    end,
    remove_MyEvent = function(self, value)
        print("移除事件");
    end
})


--替换泛型类 
xlua.hotfix(CS.TestClass(CS.System.Int32), {
    Test = function(self, a)
        print("补丁" .. a)
    end
})
